package com.robotserver.orders.vo.dycsjorder;

import com.doudian.open.annotation.OpField;
import com.doudian.open.gson.annotations.SerializedName;

import java.io.Serializable;
import java.util.List;

/**
 * @author liuqi
 * @date 2024年03月22日 10:17
 */
public class DyOrderCsjResult implements Serializable {

    private Integer code;
    private String desc;
    private Data data;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }

    public static class Data {
        //供查询下一页订单的游标，仅在按时间区间分页查询时才会返回，按订单id查询不会返回。返回为""时代表后面没有订单了。
        private String cursor;

        //订单列表
        private List<DyOrderCsj> orders;

        public String getCursor() {
            return cursor;
        }

        public void setCursor(String cursor) {
            this.cursor = cursor;
        }

        public List<DyOrderCsj> getOrders() {
            return orders;
        }

        public void setOrders(List<DyOrderCsj> orders) {
            this.orders = orders;
        }
    }

    public static class DyOrderCsj {
        @SerializedName("order_id")
        @OpField(
                desc = "订单id",
                example = "4737996432465788974"
        )
        private String orderId;

        @SerializedName("app_id")
        @OpField(
                desc = "应用id",
                example = "5271412"
        )
        private String appId;

        @SerializedName("product_id")
        @OpField(
                desc = "商品id",
                example = "3450632721376902816"
        )
        private String productId;

        @SerializedName("product_name")
        @OpField(
                desc = "商品名称",
                example = "测试商品"
        )
        private String productName;

        @SerializedName("author_account")
        @OpField(
                desc = "直播间达人昵称，仅直播间分销订单才会有该字段",
                example = "我的昵称"
        )
        private String authorAccount;

        @SerializedName("ads_attribution")
        @OpField(
                desc = "结算方式, intersect为跨播，directIn为直推",
                example = "intersect"
        )
        private String adsAttribution;

        @SerializedName("product_img")
        @OpField(
                desc = "商品图片URL",
                example = "https://tosv.boe.byted.org/obj/temai/7e92a281163e33cedef99d8735d1e90bwww828-708"
        )
        private String productImg;

        @SerializedName("total_pay_amount")
        @OpField(
                desc = "总付款金额，单位分",
                example = "2100"
        )
        private Long totalPayAmount;

        @SerializedName("pay_success_time")
        @OpField(
                desc = "支付成功时间",
                example = "2006-01-02 15:04:05"
        )
        private String paySuccessTime;

        @SerializedName("refund_time")
        @OpField(
                desc = "退款订单退款时间",
                example = "2006-01-02 15:04:05"
        )
        private String refundTime;

        @SerializedName("pay_goods_amount")
        @OpField(
                desc = "预估结算金额，单位分。如果有支付优惠，pay_goods_amount会略大于total_pay_amount",
                example = "1100"
        )
        private Long payGoodsAmount;

        @SerializedName("estimated_commission")
        @OpField(
                desc = "预估佣金收入，单位分",
                example = "100"
        )
        private Long estimatedCommission;

        @SerializedName("ads_real_commission")
        @OpField(
                desc = "实际可结算金额，单位分",
                example = "100"
        )
        private Long adsRealCommission;

        @SerializedName("split_rate")
        @OpField(
                desc = "推广费率，单位万分之一，10代表推广费率为0.10%",
                example = "10"
        )
        private Long splitRate;

        @SerializedName("after_sales_status")
        @OpField(
                desc = "售后状态，1-空，2-产生退款",
                example = "10"
        )
        private Integer afterSalesStatus;

        @SerializedName("flow_point")
        @OpField(
                desc = "订单状态。PAY_SUCC：支付完成； REFUND：退款； SETTLE：结算；CONFIRM：确认收货",
                example = "PAY_SUCC"
        )
        private String flowPoint;

        @SerializedName("settle_time")
        @OpField(
                desc = "结算时间，结算前为空字符串",
                example = "2006-01-02 15:04:05"
        )
        private String settleTime;

        @SerializedName("confirm_time")
        @OpField(
                desc = "确认收货时间",
                example = "2006-01-02 15:04:05"
        )
        private String confirmTime;

        @SerializedName("update_time")
        @OpField(
                desc = "更新时间 [联盟侧订单更新时间]",
                example = "2006-01-02 15:04:05"
        )
        private String updateTime;

        @SerializedName("estimated_tech_service_fee")
        @OpField(
                desc = "预估技术服务费，为pay_goods_amount*split_rate*0.1。",
                example = "1000"
        )
        private Long estimatedTechServiceFee;

        @SerializedName("external_info")
        @OpField(
                desc = "开发者在转链时自己上传的external_info",
                example = "3"
        )
        private String externalInfo;

        @SerializedName("media_type_name")
        @OpField(
                desc = "分销类型名称：Live-直播间，ProductDetail-商品详情，ActivityMaterial-活动页",
                example = "3"
        )
        private String mediaTypeName;

        @SerializedName("colonel_order_info")
        @OpField(
                desc = "近30天穿山甲抖客推广GMV≥500万或近30天推广佣金≥30万的媒体，可以联系客服开通订单接口升级权限，升级后增加订单信息",
                example = ""
        )
        private ColonelOrderInfo colonelOrderInfo;

        public String getOrderId() {
            return orderId;
        }

        public void setOrderId(String orderId) {
            this.orderId = orderId;
        }

        public String getAppId() {
            return appId;
        }

        public void setAppId(String appId) {
            this.appId = appId;
        }

        public String getProductId() {
            return productId;
        }

        public void setProductId(String productId) {
            this.productId = productId;
        }

        public String getProductName() {
            return productName;
        }

        public void setProductName(String productName) {
            this.productName = productName;
        }

        public String getAuthorAccount() {
            return authorAccount;
        }

        public void setAuthorAccount(String authorAccount) {
            this.authorAccount = authorAccount;
        }

        public String getAdsAttribution() {
            return adsAttribution;
        }

        public void setAdsAttribution(String adsAttribution) {
            this.adsAttribution = adsAttribution;
        }

        public String getProductImg() {
            return productImg;
        }

        public void setProductImg(String productImg) {
            this.productImg = productImg;
        }

        public Long getTotalPayAmount() {
            return totalPayAmount;
        }

        public void setTotalPayAmount(Long totalPayAmount) {
            this.totalPayAmount = totalPayAmount;
        }

        public String getPaySuccessTime() {
            return paySuccessTime;
        }

        public void setPaySuccessTime(String paySuccessTime) {
            this.paySuccessTime = paySuccessTime;
        }

        public String getRefundTime() {
            return refundTime;
        }

        public void setRefundTime(String refundTime) {
            this.refundTime = refundTime;
        }

        public Long getPayGoodsAmount() {
            return payGoodsAmount;
        }

        public void setPayGoodsAmount(Long payGoodsAmount) {
            this.payGoodsAmount = payGoodsAmount;
        }

        public Long getEstimatedCommission() {
            return estimatedCommission;
        }

        public void setEstimatedCommission(Long estimatedCommission) {
            this.estimatedCommission = estimatedCommission;
        }

        public Long getAdsRealCommission() {
            return adsRealCommission;
        }

        public void setAdsRealCommission(Long adsRealCommission) {
            this.adsRealCommission = adsRealCommission;
        }

        public Long getSplitRate() {
            return splitRate;
        }

        public void setSplitRate(Long splitRate) {
            this.splitRate = splitRate;
        }

        public Integer getAfterSalesStatus() {
            return afterSalesStatus;
        }

        public void setAfterSalesStatus(Integer afterSalesStatus) {
            this.afterSalesStatus = afterSalesStatus;
        }

        public String getFlowPoint() {
            return flowPoint;
        }

        public void setFlowPoint(String flowPoint) {
            this.flowPoint = flowPoint;
        }

        public String getSettleTime() {
            return settleTime;
        }

        public void setSettleTime(String settleTime) {
            this.settleTime = settleTime;
        }

        public String getConfirmTime() {
            return confirmTime;
        }

        public void setConfirmTime(String confirmTime) {
            this.confirmTime = confirmTime;
        }

        public String getUpdateTime() {
            return updateTime;
        }

        public void setUpdateTime(String updateTime) {
            this.updateTime = updateTime;
        }

        public Long getEstimatedTechServiceFee() {
            return estimatedTechServiceFee;
        }

        public void setEstimatedTechServiceFee(Long estimatedTechServiceFee) {
            this.estimatedTechServiceFee = estimatedTechServiceFee;
        }

        public String getExternalInfo() {
            return externalInfo;
        }

        public void setExternalInfo(String externalInfo) {
            this.externalInfo = externalInfo;
        }

        public String getMediaTypeName() {
            return mediaTypeName;
        }

        public void setMediaTypeName(String mediaTypeName) {
            this.mediaTypeName = mediaTypeName;
        }

        public ColonelOrderInfo getColonelOrderInfo() {
            return colonelOrderInfo;
        }

        public void setColonelOrderInfo(ColonelOrderInfo colonelOrderInfo) {
            this.colonelOrderInfo = colonelOrderInfo;
        }
    }

    public static class ColonelOrderInfo{
        @SerializedName("activity_id")
        @OpField(
                desc = "团长活动id",
                example = "893244"
        )
        private Long activityId;

        @SerializedName("institution_id")
        @OpField(
                desc = "团长机构id",
                example = "3538915821592146964"
        )
        private Long institutionId;

        @SerializedName("institution_name")
        @OpField(
                desc = "团长机构名称",
                example = "易号链接"
        )
        private String institutionName;

        public Long getActivityId() {
            return activityId;
        }

        public void setActivityId(Long activityId) {
            this.activityId = activityId;
        }

        public Long getInstitutionId() {
            return institutionId;
        }

        public void setInstitutionId(Long institutionId) {
            this.institutionId = institutionId;
        }

        public String getInstitutionName() {
            return institutionName;
        }

        public void setInstitutionName(String institutionName) {
            this.institutionName = institutionName;
        }
    }


}
